#ifndef __CONFIG_H__
#define __CONFIG_H__

#include <climits>
#include <math.h>


#include <hls_stream.h>


#define QUEUE_SIZE_FILTER 4//32
#define QUEUE_SIZE_MEMORY 512
#define LOG_SCATTER_CACHE_BURST_SIZE 7




#define SUB_PARTITION_NUM 4 //environment variable

#define HAVE_VERTEX_ACTIVE_BIT 1
#define HAVE_EDGE_PROP 0
#define HAVE_UNSIGNED_PROP 1

#define HAVE_APPLY 1
#define CUSTOMIZE_APPLY 0
#define HAVE_APPLY_OUTDEG 0



/*
//bfs
HAVE_FULL_SLR=true
#scatter-gather kernel
HAVE_VERTEX_ACTIVE_BIT=true
HAVE_EDGE_PROP=false
HAVE_UNSIGNED_PROP=true

#apply kernel
HAVE_APPLY=true
CUSTOMIZE_APPLY=false
HAVE_APPLY_OUTDEG=false

#scheduler
SCHEDULER=secondOrderEstimator
*/





#define NODE_WIDTH 32
#define NODE_EACH_URAMLINE (64/NODE_WIDTH)

#if HAVE_UNSIGNED_PROP
typedef  unsigned int       prop_t;
#else
typedef  int       			prop_t;
#endif


#define BLK_SIZE            (128*32*1024*8)
#define VERTEX_MAX          (BLK_SIZE)
#define ENDFLAG             0xffffffff


#define LOG_BURSTBUFFERSIZE     (7)
#define BURSTBUFFERSIZE         (1<<7)


#define ALIGN_SIZE              (BURSTBUFFERSIZE * 16)


//#define SW_DEBUG

#define CAHCE_FETCH_DEBUG   	(0)

#define HAVE_GS             (1)
#define HAVE_FPGA           (1)
#define HAVE_SW             (0)





#endif /* __CONFIG_H__ */
